﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 24/04/2014
 * Time: 06:23 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Data;

namespace Gestión_UTN.blimpl
{
	/// <summary>
	/// Description of inscripcionblimpl.
	/// </summary>
	public class inscripcionblimpl:bl.inscripcionbl
	{
		private static da.inscripcionda createInscripcion = factories.dafactory.createInscripcion();
		private static bl.alumnobl createAlumno = factories.blfactory.createAlumno();
		private static bl.carrerabl createCarrera = factories.blfactory.createCarrera();
		
		public inscripcionblimpl()
		{
		}
		
		public bool SaveInscripcion(Gestión_UTN.bo.Inscripcionbo ins)
		{
			bool ingresada = false;
			
			try 
			{
				ingresada = (null != ins)
					? createInscripcion.SaveInscripcion(ins.Fecha, ins.Alumno.Dni,
					                                    ins.Carrera.Car_id, ins.Titulo,
					                                    ins.Planilla, ins.Fotos, ins.CopiaDoc)
					:false;
				
			} 
			catch (Exception) 
			{
				
				ingresada = false;
			}
			
			return ingresada;
		}
		
		public bool DeleteInscripcion(DateTime fecha, int alu_dni)
		{
			bool eliminada = false;
			
			try 
			{
				eliminada = (null != fecha && 0 != alu_dni)
					? createInscripcion.DeleteInscripcion(fecha,alu_dni)
					:false;
			} 
			catch (Exception) 
			{
				
				eliminada = false;
			}
			
			return eliminada;
		}
		
		public bool ModifyInscripcion(DateTime fecha_anterior, int alu_dni_anterior, Gestión_UTN.bo.Inscripcionbo ins)
		{
			bool modificada = false;
			
			try 
			{
				modificada = (null != fecha_anterior && 0 != alu_dni_anterior && null != ins)
					? createInscripcion.ModifyInscripcion(fecha_anterior, alu_dni_anterior, ins.Fecha, ins.Alumno.Dni,
					                                      ins.Carrera.Car_id, ins.Titulo,ins.Planilla,ins.Fotos,
					                                      ins.CopiaDoc)
					:false;
			} 
			catch (Exception) 
			{
				modificada = false;
			}
			
			return modificada;
			
		}
		
		public System.Data.DataTable FindAllInscripciones()
		{
			DataTable tablaInscripciones = null;
			
			try 
			{
				tablaInscripciones = createInscripcion.FindAllInscripciones();
			} 
			catch (Exception) 
			{
				
				tablaInscripciones = null;
			}
			
			return tablaInscripciones;
		}
		
		public Gestión_UTN.bo.Inscripcionbo FindInscripcionByDNI(int alu_dni)
		{
			bo.Inscripcionbo inscripcion = null;
			
			try 
			{
				Entities.Inscripcion ins = (0 != alu_dni)
					? createInscripcion.FindInscripcionByDNI(alu_dni)
					:null;
				
				bo.Alumnobo alu = (null != ins)
					? createAlumno.FindAlumnoByDNI(ins.Alu_dni)
					: null;
				
				bo.Carrerabo car = (null != ins)
					? createCarrera.FindCarreraById(ins.Car_id)
					: null;
				
				inscripcion = (null != car && null != alu)
					? new bo.Inscripcionbo(ins.Id, ins.Fecha, alu, car,
					                       ins.Titulo, ins.Planilla, ins.Fotos,
					                       ins.CopiaDoc)
					: null;
			} 
			catch (Exception) 
			{
				
				inscripcion = null;
			}
			
			return inscripcion;
		}
		
		public Gestión_UTN.bo.Inscripcionbo FindInscripcionById(int id)
		{
			bo.Inscripcionbo inscripcion = null;
			
			try 
			{
				Entities.Inscripcion ins = (0 != id)
					? createInscripcion.FindInscripcionById(id)
					:null;
				
				bo.Alumnobo alu = (null != ins)
					? createAlumno.FindAlumnoByDNI(ins.Alu_dni)
					: null;
				
				bo.Carrerabo car = (null != ins)
					? createCarrera.FindCarreraById(ins.Car_id)
					: null;
				
				inscripcion = (null != car && null != alu)
					? new bo.Inscripcionbo(ins.Id, ins.Fecha, alu, car,
					                       ins.Titulo, ins.Planilla, ins.Fotos,
					                       ins.CopiaDoc)
					: null;
			} 
			catch (Exception) 
			{
				
				inscripcion = null;
			}
			
			return inscripcion;
		}
	}
}
